本文介绍将云数据库HBase标准版或自建HBase迁移至云数据库HBase增强版的方法。
背景信息
云数据库HBase增强版是基于云原生多模数据库Lindorm内核研发的、完全兼容HBase的云上托管数据库,已经在阿里集团内部发展超10年,支撑服务了淘宝、支付宝、菜鸟、优酷、高德等业务中的大量核心应用,在成本、性能、稳定性、功能、安全、易用性等方面相比社区版HBase拥有诸多优势和企业级能力。
在使用上,用户可以通过HBase官方客户端及标准API访问云数据库HBase增强版,云数据库HBase增强版同时兼容HBase-1.x和HBase-2.x客户端访问,在整体功能及API上保证近100%的兼容性。云数据库HBase增强版提供最高7倍于HBase开源版本的性能和一半的存储成本,详情请参见产品优势。
数据迁移
Lindorm Tunnel Service服务,简称LTS(原BDS),该服务是面向云原生多模数据库Lindorm(云数据库HBase增强版)业务场景特点深度定制的数据生态服务。支持简单易用的数据交换、处理、订阅等能力,满足用户的数据迁移、实时订阅、数湖转存、数仓回流、单元化多活、备份恢复等需求,实现面向Lindorm的一站式数据生态服务。详情请参见:LTS服务介绍。
通过LTS可以实现从云数据库HBase标准版或HBase社区版向云数据库HBase增强版的不停机迁移。以下是实现不停机迁移的具体操作。
准备工作
创建待迁移的云数据库HBase标准版集群(也可以是社区版HBase),具体操作请参见购买集群。
创建ECS服务,您需要确保云数据库HBase标准版集群和ECS实例满足以下条件,以保证网络的连通性。ECS实例信息的查看方法请参见查看实例信息。
所在地域相同,所在可用区相同。
使用相同的专有网络ID。
登录ECS,创建用户压测的目录,下载压测工具AHBench。压测工具请参见:AHBench。
编辑AHBench/conf/hbase-site.xml文件,配置需要测试的云数据库HBase标准版集群连接地址。配置内容如下:
<configuration> <property> <name>hbase.zookeeper.quorum</name> <value>hb-bp1u0639js2h7****-master2-001.hbase.rds.aliyuncs.com:2181,hb-bp1u0639js2h7****-master1-001.hbase.rds.aliyuncs.com:2181,hb-bp1u0639js2h7****-master3-001.hbase.rds.aliyuncs.com:2181</value> </property> </configuration>
说明configuration.property.value
:表示云数据库HBase标准版集群连接地址,通过云数据库HBase控制台获取,左侧导航栏选择数据库连接在连接信息区域查看。编辑AHBench/conf/ahbench-env.properties文件,打开HBASE_VERSION参数。需要保证Java可以调用。如下图所示:
将ECS的IP地址添加至云数据库HBase标准版集群的白名单,具体操作请参见设置白名单。
登录HBase Master页面,通过云数据库HBase控制台登录,左侧导航栏选择数据库连接,在UI访问区域中单击HBase公网访问。
启动测试,创建待迁移测试表及数据。表情况详见HBase集群Master页面。
创建目标集群
创建云数据库HBase增强版,具体操作请参见购买集群。
创建LTS(原BDS)集群
创建LTS集群,具体操作请参见开通LTS。
关联源集群和目标集群
添加云数据库HBase标准版数据源,具体请参见添加HBase数据源。
添加云数据库HBase增强版数据源,具体请参见添加HBase增强版。
完成集群关联后的LTS数据源管理页面如下图所示:
登录LTS操作页面,登录方法请参见登录LTS。完成集群关联后的LTS数据源管理页面如下图所示:
完成数据迁移
数据源关联完成后,下一步就可以创建迁移任务进行数据迁移了。
登录LTS操作页面,左侧导航栏选择一键迁移,单击创建任务,打开Lindorm/HBase不停机迁移页面。根据以下参数说明配置参数。
任务名:定义迁移任务名称。
源集群:选择已经关联的源集群。
目标集群:选择已经关联的源集群。
操作:勾选迁移操作,对于集群的整体迁移可以同时勾选表结构迁移、实时数据复制、历史数据迁移。
同步/迁移的表:可以支持以下迁移方式。
整个集群迁移: *
某个Namespace下所有表:namespace:*
迁移部分表:namespace1:table1 namespace2:table2 (不同表通过换行进行分割)
迁移表的部分列:tableA {"cols": ["f:col1", "f:col2"]}
迁移后的namespace和表的名称: namespaceA:tableA/namespaceB:tableB
说明如果没有配置namespace则默认为default。
单击创建,可以在该页面看到提交后的任务运行情况。
数据验证。数据迁移完成后可以创建数据抽样验证任务,确认源、目标集群的数据一致性。单击数据验证按钮,创建新任务,输入:源、目标集群、抽样比例、表名等。
数据验证通过后,即代表集群迁移(包括:历史数据和实时增量同步)完成,并且实时同步任务要始终保持运行中状态,直到流量切换到新集群。
为了保证集群迁移可回滚,需要配置一个反向的实时同步任务,即把源、目标交换的实时同步任务。
其他注意事项:
对于社区版HBase需要调整合适的HLog保留周期,以保证数据同步链路不会因为HLog被删除而中断。
对于自建HBase集群如果开通了kerberos的,请提交工单协助完成迁移。
如果有通过Bulkload方式做数据导入的,因为该方式下不产生HLog,意味着数据无法完成集群间的同步,请在新老集群同时配置数据导入任务,直至确认切流完成,老集群下线。
客户端配置
对于云数据库HBase标准版和云数据库HBase增强版都建议使用阿里云云数据库HBase提供的客户端。详见:HBaseJava SDK下载。
对于仍然希望使用社区版HBase客户端的客户,可以有两种选择:历史版本(Maven方式)或者历史版本(Jar包替换)。
集群切换
正式切换流量简要步骤:
应用端预发布环境可以正常读写新的云数据库HBase增强版集群。
写入新集群的数据可以通过反向同步链路将数据复制到老集群。
新老集群的复制链路正常,实时同步延迟较低(正常应该小于1秒)。
选择业务低峰期进行流量切换。